(function () {
    // abstract 抽象类 
    // 1. 声明看了之后只能用来被别人继承使用 （就不能直接 new）
    // 2. 可以添加抽象方法
    abstract class Animal {
        name: string
        constructor(name: string) {
            this.name = name
        }
        // void 表示返回为空
        // 1. 抽象方法只能定义在抽象类中
        // 2. 子类必须对抽象方法进行重写
        abstract bark(): void
    }

    class Dog extends Animal {
        bark() {
            console.log('汪汪汪！')
        }
    }

    const dog = new Dog('wangcai')
    dog.bark()

    // const an = new Animal('z')
})()